#ifndef editer_h__
#define editer_h__



#include <string>
#include "rbac_env.h"
#include "durability.hpp"
#include <rbac.h>
using namespace rbac;



/** 
 * @class    <the name>
 *
 * @brief    <description>
 *
 * @note     <em> note </em>
 *
 * See @ref <some class> for more information. 
 *
 */
class resource_editer
{
public:
	resource_editer(rbac_base_obj&	who,db_cache&	store_provider):obj_(who),store_provider_(store_provider)
	{
	}
	~resource_editer()
	{
	}
	key32	get_id()
	{
	}

	const std::string&	get_name()
	{
	}

	key32	get_owner()
	{
	}

	void		drop_this()
	{
	}
protected:
private:
	rbac_base_obj&		obj_;
	db_cache&	store_provider_;
private:
};


/** 
 * @class    <the name>
 *
 * @brief    <description>
 *
 * @note     <em> note </em>
 *
 * See @ref <some class> for more information. 
 *
 */
class role_editer
{
public:
	role_editer(rbac_role&	who,db_cache&	store_provider):role_(who),store_provider_(store_provider)
	{
	}
	~role_editer()
	{
	}
	key32	get_id()
	{
	}

	const std::string&	get_name()
	{
	}

	key32	get_owner()
	{
	}

	void	insert_priv(key32 priv_key,prbac_error	error)
	{
		//if( is_a_priv_key){
		//	if( can_insert ){
		//		//
		//		insert;
		//	}
		//}
	}
	void	remove_priv(key32 priv_key,prbac_error	error)
	{
		//if( is_a_priv_key){
		//	if( can_remove ){
		//		//
		//		remove;
		//	}
		//}
	}

	void		drop_this()
	{
	}
protected:
private:
	rbac_role&		role_;
	db_cache&	store_provider_;
};



/** 
 * @class    <the name>
 *
 * @brief    <description>
 *
 * @note     <em> note </em>
 *
 * See @ref <some class> for more information. 
 *
 */
class privilege_editer
{
public:
	privilege_editer(rbac_privilege&	who,db_cache&	store_provider):priv_(who),store_provider_(store_provider)
	{
	}
	~privilege_editer()
	{
	}
	key32	get_id()
	{
	}

	const std::string&	get_name()
	{
	}

	key32	get_owner()
	{
	}

	void	insert_obj(key32 obj_key,prbac_error	error)
	{
		//if( is_a_priv_key){
		//	if( can_insert ){
		//		//
		//		insert;
		//	}
		//}
	}
	void	remove_obj(key32 obj_key,prbac_error	error)
	{
		//if( is_a_priv_key){
		//	if( can_remove ){
		//		//
		//		remove;
		//	}
		//}
	}

	void		drop_this()
	{
	}
protected:
private:
	rbac_privilege&		priv_;
	db_cache&	store_provider_;
};


#endif // editer_h__
